home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 001 / pibt40s1.arc / HANDLEHT.MOD < prev    next >
Text File  |  1987-05-02  |  2KB  |  69 lines

  1. (*----------------------------------------------------------------------*)
  2. (*            Handle_Tab --- Process horizontal tab sequence            *)
  3. (*----------------------------------------------------------------------*)
  4.  
  5. PROCEDURE Handle_Tab( Tabs : Tab_Stop_Vector; NTabs : INTEGER );
  6.  
  7. (*----------------------------------------------------------------------*)
  8. (*                                                                      *)
  9. (*     Procedure:  Handle_Tab                                           *)
  10. (*                                                                      *)
  11. (*     Purpose:    Handle horizontal tab character for VT52, VT100.     *)
  12. (*                                                                      *)
  13. (*     Calling Sequence:                                                *)
  14. (*                                                                      *)
  15. (*        Handle_Tab( Tabs : Tab_Stop_Vector; NTabs : INTEGER );        *)
  16. (*                                                                      *)
  17. (*----------------------------------------------------------------------*)
  18.  
  19. VAR
  20.    I      : INTEGER;
  21.    J      : INTEGER;
  22.    Curcol : INTEGER;
  23.    ITab   : INTEGER;
  24.    TabCol : INTEGER;
  25.  
  26. BEGIN (* Handle_Tab *)
  27.  
  28.    Curcol := WhereX;
  29.  
  30.    IF ( Curcol > Wrap_Screen_Col ) THEN
  31.       Curcol := Wrap_Screen_Col;
  32.  
  33.    IF ( NTabs > 0 ) THEN
  34.       BEGIN
  35.  
  36.          Itab   := 1;
  37.  
  38.          WHILE ( ( ITab <= NTabs ) AND
  39.                  ( Curcol >= Tabs[Itab] ) ) DO
  40.             ITab := SUCC( ITab );
  41.  
  42.          IF ( ITab <= NTabs ) THEN
  43.             TabCol := Tabs[ITab]
  44.          ELSE
  45.             TabCol := Wrap_Screen_Col;
  46.  
  47.       END
  48.    ELSE
  49.       TabCol := Curcol;
  50.  
  51.    MoveToXY( TabCol , WhereY );
  52.  
  53.    IF Review_On THEN
  54.       FOR I := CurCol TO ( TabCol - 1 ) DO
  55.          BEGIN
  56.             J := ORD( Review_Line[0] ) + 1;
  57.             Review_Line[J] := ' ';
  58.             Review_Line[0] := CHR( J );
  59.          END;
  60.  
  61.    IF ( Capture_On AND Exact_Capture ) THEN
  62.       Capture_Char( CHR( HT ) );
  63.  
  64.    IF Printer_On THEN
  65.       FOR Itab := CurCol TO ( TabCol - 1 ) DO
  66.          WRITE( Lst , ' ' );
  67.  
  68. END   (* Handle_Tab *);
  69.